Tengo un objeto "persona1" y en él hay un método "inscribirse" ==>
function Person(first, last, age, gender) { this.enroll = function abc() { console.log("hello world") } // property and method definitions this.name = { first: first, last: last, }; this.age = age; this.gender = gender; //...see link in summary above for full definition } let person1 = new Person('Bob', 'Smith', 32, 'male', ['music', 'skiing']); console.log(person1); Mi pregunta es por qué en console.log(person1.enroll) se devuelve el function body or function definition(ƒ abc() {console.log("hello world")}) , por qué no se devuelve todo el objeto de la función de esta manera =>
ƒ abc() arguments: null caller: null length: 0 name: "abc" prototype: {constructor: ƒ} [[FunctionLocation]]: oop2.html:12 [[Prototype]]: ƒ () [[Scopes]]: Scopes[2] y por qué tengo que hacer console.dir(person1.enroll) para ver todas las propiedades y métodos del objeto de función de enroll . Por qué console.log(person1.enroll) no da acceso a todos los métodos y propiedades dentro de la función de inscripción.
La respuesta a por qué log produce lo que hace y dir produce lo que hace es que están escritos por una razón particular. Según la documentación
La intención detrás del
loges "para la salida general de información de registro"
La intención detrás de
dires "mostrar una lista interactiva de las propiedades de un objeto JavaScript específico. Esta lista le permite usar triángulos desplegables para examinar el contenido de los objetos secundarios".
Entonces, por intención, log no le brinda todas las propiedades y métodos y otra información. log es solo para "registro general", para darle alguna pista sobre el objeto. Tenemos dir con el propósito expreso de generar todo. En otras palabras, log no le brinda una descripción detallada porque los diseñadores del objeto de la consola eligieron poner esa información en dir .
(Los diseñadores podrían haber optado por producir más con log , pero querían reservar esa función más poderosa para dir . Además, probablemente esté familiarizado con el objeto general de registro de punto de la consola que proporciona el [object Object] a menudo inútil, por lo que en realidad no debería ser un sorprende que el registro de una función tampoco brinde detalles completos).